
from PyQt5.QtWidgets import QFileDialog, QMessageBox, QDockWidget, QListWidget
from UiLogin import Ui_Login  # 由.UI文件生成.py文件后，导入创建的GUI类
from StackMain import *
from PyQt5 import QtWidgets,QtGui


class LoginWindow(QtWidgets.QMainWindow, Ui_Login):

    def __init__(self):
        super(LoginWindow, self).__init__()
        self.setupUi(self)
        window_pale = QtGui.QPalette()
        window_pale.setBrush(self.backgroundRole(),
                             QtGui.QBrush(QtGui.QPixmap("./Pic/loginBack.jpg")))

        self.setPalette(window_pale)

        # 将点击事件与槽函数进行连接
        self.Login.clicked.connect(self.checkAndLogin)
        self.write.clicked.connect(self.writeMessage)
        self.exit.clicked.connect(self.exitSoft)
        # 登录按钮 函数

    def checkAndLogin(self):
        # 取出text信息
        Host = self.txtHost.text()
        UserName = self.txtUserName.text()
        Password=self.txtPassword.text()
        Port=self.txtPort.text()
        flag = False
        if Host == "" or UserName == "" or Password=="" or Port=="":
            QMessageBox.warning(self, "警告", " 您的输入无效，请重新输入！")
            return
        else:
            try:
                login_url = "https://{0}:{1}/dna/system/api/v1/auth/token".format(Host, Port)
                result = requests.post(url=login_url, auth=HTTPBasicAuth(UserName, Password), verify=False)
                result.raise_for_status()
                flag = True

            except requests.HTTPError as e:
                print(e)
                QMessageBox.warning(self, "提示", " 访问失败！请检查输入是否正确，或网络是否通畅。")

        if flag:  # 远程能访问成功的话

            # 1.Ui_Main这里就设置成你想显示的窗口就行了
            self.Ui_Main = StackMainWindow(Host+':'+Port, UserName, Password, 'v1')  # 生成主窗口的实例
            self.Ui_Main.show()
            # 2关闭本窗口
            self.close()

    def writeMessage(self):
        self.txtHost.setText("sandboxdnac.cisco.com")
        self.txtUserName.setText("devnetuser")
        self.txtPassword.setText("Cisco123!")
        self.txtPort.setText("443")

    def exitSoft(self):
        app = QApplication.instance()
        app.exit()


if __name__ == '__main__':  # 这个文件是主程序。
    app = QtWidgets.QApplication(sys.argv)  # QApplication相当于main函数，也就是整个程序（很多文件）的主入口函数。对于GUI程序必须至少有一个这样的实例来让程序运行。
    window = LoginWindow()  # 生成一个实例（对象）
    window.show()  # 有了实例，就得让它显示。这里的show()是QWidget的方法，用来显示窗口。
    sys.exit(app.exec_())  # 调用sys库的exit退出方法，条件是app.exec_()也就是整个窗口关闭